import { createRouter, createWebHistory } from 'vue-router'
import staticRouter from './routes'
import NProgress from '@/config/nprogress'
import pinia from '@/store'
import useUserStore from '@/store/modules/user'
import { LOGIN_URL, ROUTER_WHITE_LIST } from '@/config'

const userStore = useUserStore(pinia)

// 创建路由器
let router = createRouter({
  // 路由模式
  history: createWebHistory(),
  routes: staticRouter,
  scrollBehavior: () => ({ top: 0, left: 0 })
})

router.beforeEach((to, from, next) => {
  // 1、加载进度条开始
  NProgress.start()

  // 2、标题设置
  const title = import.meta.env.VITE_APP_TITLE
  document.title = to?.meta?.title ? `${to.meta.title} - ${title}` : title

  // 3、判断是否要访问登录页面，如果有token就强制在当前页面，否则跳转到登录页面
  if (to.path.toLocaleLowerCase() == LOGIN_URL) {
    if (userStore.token) return next(from.fullPath)
    return next()
  }

  // 4、判断是否在路由白名单中，如果在直接放行
  if (ROUTER_WHITE_LIST.includes(to.path)) {
    return next()
  }

  // 5、判断是否有token,没有重定向到登录页面
  if (!userStore.token) return next({ path: LOGIN_URL, query: { redirect: from.path } })
  next()
})

router.afterEach((_, __) => {
  NProgress.done()
})
export default router
